#include "Stack.h"
#include "Queue.h"
#include "Priority_queue.h"
#include <queue>

int main()
{
	Stack<int> st;
	st.push(1);
	st.push(2);
	st.push(3);
	st.push(4);
	st.push(5);
	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}
	cout << endl;
	Queue<int> q;
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);
	q.push(5);
	while (!q.empty())
	{
		cout << q.front() << " ";
		q.pop();
	}
	cout << endl;
	vector<int> v{ 1, 5, 9, 8, 7, 3, 6, 2};
	ouyang::Priority_queue<int, vector<int>, greater<int>> pq(v.begin(), v.end());
	while (!pq.empty())
	{
		cout << pq.top() << " ";
		pq.pop();
	}
	cout << endl;
	priority_queue<int> p(v.begin(), v.end());
	while (!p.empty())
	{
		cout << p.top() << " ";
		p.pop();
	}

	return 0;
}